<?php
class lib_right extends spModel{
	/**
	 * 获取权限列表
	 * 或获取其中一条权限信息
	 * 注意！权限ID并不是权限代码
	 * @param int $rightid 权限ID
	 * @return array 结果，一维数组或二维数组
	 */
	function getRights($rightid){
		$this->tbl_name='rc_rights';
		$this->pk='rightid';
		if(empty($rightid)) return $this->findAll();
		else return $this->findBy('rightid', $rightid);
	}
	
	/**
	 * 获取反式群组数组
	 * 该函数将返回一维数组，其键名是groupid，其键值是groupname
	 * @return array
	 */
	function exGroup(){
		$this->tbl_name='rc_groups';
		$this->pk='groupid';
		$groups = $this -> findAll();
		$returns = array();
		for($i=0;isset($groups[$i]);$i++){
			$returns[$groups[$i]['groupid']] = $groups[$i]['groupname'];
		}
		return $returns;
	}
	
	/**
	 * 将数组中的groupid转化为groupname
	 * @param array $rightlist 原始二维数组，勿输入一维数组（不支持）
	 * @return array 结果，二维数组
	 */
	function exGroupId($rightlist){
		$group_options = $this->exGroup();
		for($i=0;isset($rightlist[$i]);$i++){
			$rightlist[$i]['groupid'] = $group_options[$rightlist[$i]['groupid']];
		}
		return $rightlist;
	}
	
	/**
	 * 新增一个权限条目
	 * @param string $rightsnum 权限代码，10个字符以内，支持英文字母和数字
	 * @param string $description 权限描述，注释
	 * @param int $groupid 限制群组的ID
	 * @param int $allow 允许1/禁止0
	 * @param int $begin 限制的起始时间戳，为空则不限制
	 * @param int $end 限制的结束时间戳，为空则不限制
	 * @return int 成功新增则返回权限条目的权限ID
	 */
	function addRight($rightsnum,$description,$groupid,$allow,$begin,$end){
		$this -> tbl_name = 'rc_rights';
		$this -> pk = 'rightid';
		$begin = $this->exDateToTime($begin);
		$end = $this->exDateToTime($end);
		return $this -> create(array('rightsnum'=>$rightsnum,'description'=>$description,'groupid'=>$groupid,'allow'=>$allow,'begin'=>$begin,'end'=>$end));
	}
	
	/**
	 * 将日期转换成时间戳
	 * @param int $date
	 * @return int
	 */
	function exDateToTime($date){
		if(empty($date)) return 0;
		return mktime(substr($date,8,2),substr($date,10,2),substr($date,12,2),substr($date,4,2),substr($date,6,2),substr($date,0,4));
	}
	
	/**
	 * 删除一个权限
	 * @param int $rightid 权限ID
	 * @return int 若删除成功则返回大于0的数值
	 */
	function deleteRight($rightid){
		$this -> tbl_name = 'rc_rights';
		$this -> pk = 'rightid';
		return $this -> deleteByPk($rightid);
	}
	
	/**
	 * 编辑一个权限
	 * @param int $rightid 权限ID
	 * @param string $rightsnum 权限代码，10个字符以内，支持英文字母和数字
	 * @param string $description 权限描述，注释
	 * @param int $groupid 限制群组的ID
	 * @param int $allow 允许1/禁止0
	 * @param int $begin 限制的起始时间戳，为空则不限制
	 * @param int $end 限制的结束时间戳，为空则不限制
	 * @return int 成功修改则返回大于0的数值
	 */
	function editRight($rightid,$rightsnum,$description,$groupid,$allow,$begin,$end){
		$this -> tbl_name = 'rc_rights';
		$this -> pk = 'rightid';
		$begin = $this->exDateToTime($begin);
		$end = $this->exDateToTime($end);
		return $this -> update(array('rightid'=>$rightid), array('rightsnum'=>$rightsnum,'description'=>$description,'groupid'=>$groupid,'allow'=>$allow,'begin'=>$begin,'end'=>$end));
	}
}